

// 引入express框架，并使用express
const express=require('express')
const app=express()

// 解析表单数据的中间件
// 防止req.body等于undefined
const bodyParser = require('body-parser')

// cors跨域
const cors = require('cors')
// 全局挂载
app.use(cors())

// Multer 是一个 node.js 中间件，用于处理 multipart/form-data 类型的表单数据，它主要用于上传文件。
const multer = require("multer");
// 在server服务端下新建一个public文件，在public文件下新建upload文件用于存放图片
const upload = multer({ dest:'./public/upload' })

app.use(upload.any())
// 静态托管
app.use(express.static("./public"))


app.use(bodyParser.urlencoded({	extended: false}))
// parse application/json
app.use(bodyParser.json())

app.use((req,res,next)=>{
	//status=0为成功，=1为失败，默认设置为1
	res.cc=(err,status=1)=>{
		res.send({
			status,
			message:err instanceof Error ? err.message:err,
		})
	}
	next()
})

const jwtconfig=require('./jwt_config/index.js')
const {expressjwt:jwt}=require('express-jwt')
// app.use(jwt({
// 	secret:jwtconfig.jwtSecretKey,algorithms:['HS256']
// }).unless({
// 	path:[/^\/api\//]
// }))

const loginRouter=require('./router/login.js')
const Joi=require('joi')
app.use('/api',loginRouter)

const userRouter=require('./router/userinfo.js')
app.use('/user',userRouter)

const setRouter=require('./router/setting.js')
app.use('/set',setRouter)


//对不符合joi验证规则的情况进行报错
app.use((req,res,next)=>{
	if(err instanceof Joi.ValidationError) return res.cc(err)
})

//绑定和侦听指定的主机和端口
app.listen(3007, () => {
	console.log('http://127.0.0.1:3007')
})